package Library;

import java.util.ArrayList;
import java.util.Scanner;

public class businessOperateClass {

//无参构造
	public businessOperateClass() {
	}
	/*
	 * System.out.println("=========商家用户选择========="); System.out.println("1.查找图书");
	 * System.out.println("2.新增图书"); System.out.println("3.删除图书");
	 * System.out.println("4.显示图书"); System.out.println("0.退出系统");
	 */

	Scanner input = new Scanner(System.in);

//书的信息：String bookname, String type, 
//	boolean isBorrow, String author, int price, String username
	/*
	 * 您提到的问题是在输入书的作者和借阅者的名字时，这些信息没有被正确录取。 这可能是由于在输入整数（isBorrow 和
	 * price）后，input.nextInt() 不会消耗掉后面的换行符，因此当您尝试使用 input.nextLine() 读取字符串时，
	 * 它实际上是在读取上一个 input.nextInt() 留下的换行符，而不是您输入的字符串。 为了解决这个问题，您可以在读取整数之后添加一个额外的
	 * input.nextLine() 调用， 以消耗掉换行符。这样，当您再次调用 input.nextLine() 来读取字符串时，
	 * 它会读取您输入的字符串而不是之前的换行符。
	 */
	public void addNewBooks(ArrayList<Book> bookList) {
		String bookname;
		String type;
		int isBorrow;// 方便操作，0代表没有借出，1代表借出
		String author;
		int price;
		String username;

		System.out.println("请输入新增书的信息：\n" + "书名:");
		bookname = input.nextLine();

		System.out.println("书的类型:");
		type = input.nextLine();

		System.out.println("是否已借阅:");
		isBorrow = input.nextInt();
		input.nextLine();// 消除换行符

		System.out.println("书的作者:");
		author = input.nextLine();

		System.out.println("书的价格:");
		price = input.nextInt();
		input.nextLine();// 消除换行符

		System.out.println("借阅者的名字:");
		username = input.nextLine();

		Book book = new Book(bookname, type, isBorrow, author, price, username);
		bookList.add(book);
		System.out.println(book.getBookname() + "添加成功");
		// 测试
//		System.out.println(bookList.get(0).searchBook());
	}

	public void searchBooks(ArrayList<Book> booklist) {
		// 判断图书是否为空，若空提示并退出查询
		if (booklist.isEmpty()) {
			System.out.println("当前图书为空，请添加后在来查询图书");
			return;
		}

		System.out.println("请输入您要找的书籍");

		// 录入要找到书名，然后通过booklist来查找书的详细信息
		String bookName = input.nextLine();

		// 两种情况 1找到书籍，列出信息 2找不到书籍，返回相应信息
		// 如果搜索超过三次或已经找到了书籍，将自动退出查找图书功能
		int isSearch = 0;// 定义一个变量表示是否找到了书籍,0代表没找到

		int searchcnt = 0;
		while (true) {

			for (int i = 0;; i++) {
				if (booklist.get(i).getBookname().equals(bookName)) {
					System.out.println(booklist.get(i).searchBook());
					isSearch = 1;
					break;
				} else if (i >= booklist.size() - 1) {
					isSearch = 0;
					break;
				}
			}
			if (isSearch == 0) {
				System.out.println("您输入的书名不存在，请重新输入");
				bookName = input.nextLine();
			} else if (isSearch == 1) {
				return;

			}
			searchcnt++;
			if (searchcnt == 2) {
				System.out.println("您查找次数已超过三次，自动退出查找图书功能");
				return;
			}

		}

	}

	public void deleteBooks(ArrayList<Book> booklist) {
		// 搜索过程类似于上面
		// 判断图书是否为空，若空提示并退出查询

		System.out.println("请输入要删除书的名字");
		String bookName = input.nextLine();

		int isSearch = 0;// 定义一个变量表示是否找到了书籍,0代表没找到
		int searchcnt = 0;
		while (true) {

			// 找到要删除的书的名字，并删除
			// 1 找得到，2 找不到

			for (int i = 0;; i++) {
				if ((booklist.get(i).getBookname()).equals(bookName)) {
					isSearch = 1;
					booklist.remove(i);
					System.out.println("删除成功");
					break;
				} else if (i >= booklist.size() - 1) {
					isSearch = 0;
					break;
				}
			}
			if (isSearch == 0) {
				System.out.println("您输入的书名不存在，请重新输入");
				bookName = input.nextLine();
			} else if (isSearch == 1) {
				return;
			}
			searchcnt++;
			if (searchcnt == 2) {
				System.out.println("您查找次数已超过三次，自动退出删除图书功能");
				return;
			}
		}

	}

	public void showAllBooks(ArrayList<Book> booklist) {

		// 判断图书是否为空，若空提示并退出查询
		if (booklist.isEmpty()) {
			System.out.println("当前图书为空，请添加后在来显示图书");
			return;
		}
		for (Book book : booklist) {
			System.out.println(book.searchBook());
		}

	}

}
